package model

import "time"

// ## 登录方式

const (
	// 0x 密码

	LoginTypeUsernamePassword = 1
	LoginTypeEmailPassword    = 2
	LoginTypePhonePassword    = 3

	// 1x 验证码

	LoginTypeUsernameVerificationCode = 11
	LoginTypeEmailVerificationCode    = 12
	LoginTypePhoneVerificationCode    = 13

	// 9x 其他

	LoginTypePhoneQuick = 91 // 手机闪验
	LoginTypeThumb      = 92 // 指纹
)

// ## 模型

type User struct {
	Id                        string    `json:"id"`
	Username                  string    `json:"username"`
	Email                     string    `json:"email"`
	Phone                     string    `json:"phone"`
	Password                  string    `json:"password"`
	VerificationCode          string    `json:"verification_code"`
	VerificationCodeExpiredAt time.Time `json:"verification_code_expired_at"`
}

type AuthUser struct {
	Id   uint
	Name string
}

// 请求响应

type AuthSendVerificationCodeReq struct { // 发送验证码请求
	Phone string `json:"phone"`
	Token string `json:"token"`
}
type AuthSendVerificationCodeRes struct { // 发送验证码响应
	State       int   `json:"state"`
	LeftSeconds int64 `json:"left_seconds"`
}
type AuthLoginReq struct { // 登录请求
	Type uint `json:"type"`
	// 查询字段
	Username string `json:"username"`
	Email    string `json:"email"`
	Phone    string `json:"phone"`
	// 校验字段
	Password         string `json:"password"`
	VerificationCode string `json:"verification_code"`
}
type AuthLoginRes struct { // 登录响应
	State  int    `json:"state"`
	UserId string `json:"user_id"`
	Slug   string `json:"slug"`
	Token  string `json:"token"`
}
